/**
 * 
 */
package rs.fon.rapidminer.process.builder.generictree;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import rs.fon.rapidminer.operator.learner.tree.LeafQualityStoppingCriteria;
import rs.fon.rapidminer.operator.learner.tree.TreeDepthStoppingCriteria;
import rs.fon.rapidminer.process.Parameter;
import rs.fon.rapidminer.process.Process;
import rs.fon.rapidminer.process.Step;
import rs.fon.rapidminer.process.StepData;
import rs.fon.rapidminer.process.builder.ProcessBuilder;
import rs.fon.rapidminer.process.generictree.BestSplitStep;
import rs.fon.rapidminer.process.generictree.CreateSurogateSplitStep;
import rs.fon.rapidminer.process.generictree.GenericTreeProcess;
import rs.fon.rapidminer.process.generictree.PossibleSplitStep;
import rs.fon.rapidminer.process.generictree.PruneTreeStep;
import rs.fon.rapidminer.process.generictree.RemoveInsignificantAtributesStep;
import rs.fon.rapidminer.process.generictree.StopingCriteriaStep;

/**
 * Custom process builder class. It builds process for GenericTree.
 * 
 * @author Nikola Nikolic
 * 
 */
public class GenericTreeProcessBuilder extends ProcessBuilder {

	/*
	 * (non-Javadoc)
	 * 
	 * @see rs.fon.rapidminer.proces.ProcesBuilder#buildProces()
	 */

	/**
	 * This method builds GenericTree process.
	 * 
	 * @return {@link Process}
	 */
	@Override
	public Process buildProces() {
		// TODO Auto-generated method stub



		Step s1 = new RemoveInsignificantAtributesStep();
		Step s2 = new PossibleSplitStep();
		Step s3 = new BestSplitStep();
		Step s4 = new StopingCriteriaStep();
		Step s5 = new CreateSurogateSplitStep();
		Step s6 = new PruneTreeStep();
		
		List<Step> steps = new LinkedList<Step>();
		steps.add(s1);
		steps.add(s2);
		steps.add(s3);
		steps.add(s4);
		steps.add(s5);
		steps.add(s6);

		Process process = new GenericTreeProcess();
		process.setProcessSteps(steps);

		return process;
	}
}
